package com.lifang.framework.beans.factory;

import com.lifang.framework.beans.factory.config.AutowireCapableBeanFactory;
import com.lifang.framework.beans.factory.config.ConfigurableBeanFactory;
import com.lifang.framework.beans.factory.support.BeanDefinition;
import com.lifang.framework.beans.BeansException;

/**
 * 可列出的bean工厂
 */
public interface ConfigurableListableBeanFactory extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory {

    /**
     * 获取bean定义
     */
    BeanDefinition getBeanDefinition(String beanName) throws BeansException;

    /**
     * 提前实例化单例Bean对象
     */
    void preInstantiateSingletons() throws BeansException;

    /**
     * 注册上下文引用
     */
    void registerResolvableDependency(Class<?> dependencyType, Object autowiredValue);

}
